home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / XML Utilities / Professional Programmer XSL IDE / Xselerator25.msi / Data.Cab / F36108_strmap.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2002-01-20  |  1.5 KB  |  47 lines

  1. <xsl:stylesheet version="1.0" 
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:saxon="http://icl.com/saxon"
  4. xmlns:map-foldl-func="map-foldl-func"
  5. exclude-result-prefixes="xsl saxon map-foldl-func"
  6. >
  7.    <xsl:import href="str-foldl.xsl"/>
  8.  
  9.    <map-foldl-func:map-foldl-func/>
  10.    
  11.      <xsl:template name="str-map">
  12.       <xsl:param name="pFun" select="/.."/>
  13.       <xsl:param name="pStr" select="/.."/>
  14.  
  15.        <xsl:variable name="vFoldlFun" select="document('')/*/map-foldl-func:*[1]"/>
  16.        
  17.        <xsl:variable name="vFuncComposition">
  18.          <xsl:copy-of select="$vFoldlFun"/>
  19.          <xsl:copy-of select="$pFun"/>
  20.        </xsl:variable>
  21.        
  22.        <xsl:variable name="vFComposition" 
  23.                      select="saxon:node-set($vFuncComposition)/*"/>
  24.  
  25.       <xsl:call-template name="str-foldl">
  26.         <xsl:with-param name="pFunc" select="$vFComposition"/>
  27.         <xsl:with-param name="pStr" select="$pStr"/>
  28.         <xsl:with-param name="pA0" select="/.."/>
  29.       </xsl:call-template>
  30.     </xsl:template>
  31.  
  32.  
  33.     <xsl:template name="mapL" match="*[namespace-uri() = 'map-foldl-func']">
  34.          <xsl:param name="arg0" select="/.."/>
  35.          <xsl:param name="arg1" select="/.."/>
  36.          <xsl:param name="arg2" select="/.."/>
  37.          
  38.          <!-- $arg1 must be A0 -->
  39.          <xsl:copy-of select="$arg1"/>
  40.          
  41.            <xsl:apply-templates select="$arg0[1]">
  42.              <xsl:with-param name="arg1" select="substring($arg2,1,1)"/>
  43.            </xsl:apply-templates>
  44.     </xsl:template>
  45.     
  46.  
  47. </xsl:stylesheet>